02-WAS서버구성

WAS 서버 구성 (Tomcat + JSP)

WAS 서버에 Tomcat을 설치하고 간단한 JSP 애플리케이션을 배포합니다.

전제조건

1. Java 및 Tomcat 설치

WAS 서버에 접속하여 Java와 Tomcat을 설치합니다.

WAS 서버 접속

# Web 서버에 먼저 접속
ssh -i webapp-keypair.pem ec2-user@[Web서버-Public-IP]

# Web 서버에서 WAS 서버로 접속
ssh ec2-user@[WAS서버-Private-IP]

시스템 업데이트 및 Java 설치

# 시스템 패키지 업데이트
sudo yum update -y

# Java 17 설치
sudo yum install java-17-amazon-corretto-devel -y

# Java 설치 확인
java -version

Tomcat 10 설치

# 작업 디렉토리로 이동
cd /tmp

# Tomcat 10 다운로드
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz

# 압축 해제
tar -xzf apache-tomcat-10.1.26.tar.gz

# Tomcat을 /opt 디렉토리로 이동
sudo mv apache-tomcat-10.1.26 /opt/tomcat

# 실행 권한 부여
sudo chmod +x /opt/tomcat/bin/*.sh

Tomcat 환경 변수 설정

# 환경 변수 설정
echo 'export CATALINA_HOME=/opt/tomcat' | sudo tee -a /etc/environment
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto' | sudo tee -a /etc/environment

# 현재 세션에 적용
export CATALINA_HOME=/opt/tomcat
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto

2. 간단한 JSP 애플리케이션 생성

기본적인 "Hello World" JSP 페이지를 만들어봅니다.

webapp 디렉토리 생성

# 웹 애플리케이션 디렉토리 생성
sudo mkdir -p /opt/tomcat/webapps/webapp

index.jsp 파일 생성

# 간단한 JSP 페이지 생성
sudo tee /opt/tomcat/webapps/webapp/index.jsp << 'EOF'
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tomcat WAS 서버</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 50px auto;
            padding: 20px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
        }
        .container {
            background: white;
            color: #333;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        }
        h1 {
            color: #4ECDC4;
            text-align: center;
        }
        .info-box {
            background: #f8f9fa;
            padding: 20px;
            margin: 20px 0;
            border-left: 4px solid #4ECDC4;
            border-radius: 5px;
        }
        .server-info {
            background: #e3f2fd;
            padding: 15px;
            border-radius: 5px;
            margin: 10px 0;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>🎉 Tomcat WAS 서버 동작 확인</h1>
        
        <div class="info-box">
            <h3>서버 정보</h3>
            <div class="server-info">
                <strong>서버 타입:</strong> Apache Tomcat WAS<br>
                <strong>현재 시간:</strong> <%= new Date() %><br>
                <strong>서버 포트:</strong> 8080<br>
                <strong>애플리케이션:</strong> /webapp
            </div>
        </div>

        <div class="info-box">
            <h3>JSP 동적 처리 테스트</h3>
            <p><strong>페이지 로드 시간:</strong> 
            <% 
                java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                out.println(sdf.format(new Date())); 
            %>
            </p>
            <p><strong>세션 ID:</strong> <%= session.getId() %></p>
        </div>

        <div class="info-box">
            <h3>아키텍처 정보</h3>
            <p>이 페이지는 <strong>Private 서브넷</strong>의 Tomcat WAS에서 동작하고 있습니다.</p>
            <p>일반적으로는 Apache Web Server를 통해 접근하게 됩니다.</p>
        </div>
    </div>
</body>
</html>
EOF

정적 파일 생성 (CSS 테스트용)

# 정적 파일을 위한 디렉토리 생성
sudo mkdir -p /opt/tomcat/webapps/webapp/static

# 간단한 CSS 파일 생성
sudo tee /opt/tomcat/webapps/webapp/static/test.css << 'EOF'
/* 정적 파일 테스트용 CSS */
.static-test {
    background-color: #ff6b6b;
    padding: 20px;
    border-radius: 10px;
    color: white;
    text-align: center;
    margin: 20px 0;
}
EOF

정적 파일 테스트 페이지

# 정적 파일 연동 테스트 페이지
sudo tee /opt/tomcat/webapps/webapp/static-test.html << 'EOF'
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>정적 파일 테스트</title>
    <link rel="stylesheet" href="static/test.css">
</head>
<body>
    <h1>정적 파일 테스트</h1>
    <div class="static-test">
        <h2>이 파일은 정적 파일입니다</h2>
        <p>Apache Web Server에서 직접 처리되어야 합니다.</p>
        <p>Tomcat에서도 접근 가능하지만, 성능상 Apache에서 처리하는 것이 좋습니다.</p>
    </div>
</body>
</html>
EOF

3. Tomcat 시작 및 테스트

Tomcat을 시작하고 JSP 애플리케이션이 정상 동작하는지 확인합니다.

Tomcat 시작

# Tomcat 시작
sudo /opt/tomcat/bin/startup.sh

# Tomcat 프로세스 확인
ps aux | grep tomcat

# Tomcat 로그 확인
sudo tail -f /opt/tomcat/logs/catalina.out

로컬 테스트

# WAS 서버에서 로컬 테스트
curl http://localhost:8080/webapp/

# JSP 페이지가 정상적으로 HTML로 변환되어 출력되면 성공

Web 서버에서 WAS 접근 테스트

# Web 서버로 돌아가기 (WAS 서버에서 exit)
exit

# Web 서버에서 WAS로 접근 테스트
curl http://[WAS서버-Private-IP]:8080/webapp/

# 예시: curl http://10.0.2.45:8080/webapp/

4. Tomcat 관리 설정 (선택사항)

Tomcat을 더 쉽게 관리할 수 있도록 시스템 서비스로 등록합니다.

Tomcat 서비스 파일 생성

# WAS 서버에 다시 접속
ssh ec2-user@[WAS서버-Private-IP]

# 현재 실행 중인 Tomcat 중지
sudo /opt/tomcat/bin/shutdown.sh

# Tomcat 시스템 서비스 파일 생성
sudo tee /etc/systemd/system/tomcat.service << 'EOF'
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
User=root
Group=root

Environment=JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 서비스 데몬 리로드
sudo systemctl daemon-reload

# Tomcat 서비스 시작 및 자동 시작 설정
sudo systemctl enable tomcat
sudo systemctl start tomcat

# 서비스 상태 확인
sudo systemctl status tomcat

5. 방화벽 설정 (필요시)

Amazon Linux에서 방화벽이 활성화되어 있는 경우 포트를 개방합니다.

방화벽 상태 확인

# 방화벽 상태 확인
sudo systemctl status firewalld

# 방화벽이 비활성화되어 있다면 아무 작업 불필요

포트 개방 (방화벽이 활성화된 경우에만)

# 8080 포트 개방 (필요시에만)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

완료 체크리스트

테스트 URL 정리

WAS 서버에서 직접 접근:

Web 서버에서 WAS 접근:


WAS 서버 구성 완료! Tomcat과 JSP 애플리케이션이 정상적으로 동작하고 있습니다.

다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/03-Web서버연동으로 이동하여 Apache HTTP Server를 설치하고 Tomcat과 연동합니다.


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드, AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/01-아키텍처이해및준비